#include "test_other.h"
#include "cm_mem.h"
#include "string.h"
#include "cm_uart.h"
#include "cm_os.h"

#define MN316_TEST_UART 1
#define MN316_UART_BUF_LEN  1024

extern int test_virt_at_len;
extern unsigned char test_virt_at_buffer[1024];
static unsigned char test_mn316_uart_buf[1024] = {0};

static int mn316_rx_rev_len = 0;
extern int virt_at_ret_flag;
static osThreadId_t Test_OTHER_TaskHandle = NULL;//OC OTHER任务句柄
static osEventFlagsId_t test_other_task_flag = NULL; 
static void* test_uart_sem = NULL;

static void test_other_task(void)
{
	int temp_len = 0;
    while(1)
    {
        osSemaphoreAcquire(test_uart_sem,osWaitForever);
        if (mn316_rx_rev_len < MN316_UART_BUF_LEN)
        {
            temp_len = cm_uart_read(MN316_TEST_UART, (void*)&test_mn316_uart_buf[mn316_rx_rev_len], MN316_UART_BUF_LEN - mn316_rx_rev_len, 1000);
            mn316_rx_rev_len += temp_len;
        }

    }   
}

static void test_serial_uart_cb(void *param, uint32_t type)
{
    //uart_event_msg_t msg = {0};
    if (CM_UART_EVENT_TYPE_RX_ARRIVED & type)
    {
        osSemaphoreRelease(test_uart_sem);
        
    }
    
    // if(CM_UART_EVENT_TYPE_RX_OVERFLOW & type)
    // {
    //     msg.msg_type = type;
    //     if(uart_event_queue != NULL)//向队列发送数据
    //     {
    //         osMessageQueuePut(uart_event_queue, &msg, 0, 0);
    //     }
    // }

}

void cm_test_other_operation(unsigned char *cmd[],int len)
{
    if(0 == strncmp("CHECK_AT_CMD",cmd[2],strlen("CHECK_AT_CMD")))
    {
        test_check_exist_of_at_cmd_2_8_chapter();
    }
    else if(0 == strncmp("TICK_MS",cmd[2],strlen("TICK_MS")))
    {
        cm_demo_printf("before 100000 tick delay\n");
        osDelay(100000);
        cm_demo_printf("after 100000 tick delay\n");
    }
    else if(0 == strncmp("FS_WR_CHECK",cmd[2],strlen("FS_WR_CHECK")))
    {
        cm_test_write_read_check(cmd,len);
    }else if(0 == strcmp("MN316_SLEEP_RESET",cmd[2]))
    {

        int32_t ret = -1;
        cm_uart_cfg_t config = 
        {
            CM_UART_BYTE_SIZE_8, 
            CM_UART_PARITY_NONE,
            CM_UART_STOP_BIT_ONE, 
            CM_UART_FLOW_CTRL_NONE, 
            CM_UART_BAUDRATE_9600,
            0
        };
        cm_uart_event_t event = 
        {
            CM_UART_EVENT_TYPE_RX_ARRIVED|CM_UART_EVENT_TYPE_RX_OVERFLOW,
            "mn316_uart",
            test_serial_uart_cb
        };
        
        cm_iomux_set_pin_func(CM_IOMUX_PIN_29, CM_IOMUX_FUNC_FUNCTION1);
        cm_iomux_set_pin_func(CM_IOMUX_PIN_28, CM_IOMUX_FUNC_FUNCTION1);
        
        ret = cm_uart_register_event(MN316_TEST_UART, &event);
        
        if(ret != RET_SUCCESS)
        {
            cm_log_printf(0, "uart register event err,ret=%d\n", ret);
            return;
        }
        ret = cm_uart_open(MN316_TEST_UART, &config);
        
        if(ret != RET_SUCCESS)
        {
            cm_log_printf(0, "uart init err,ret=%d\n", ret);
            return;
        }

        if(NULL == Test_OTHER_TaskHandle)
        {
            osThreadAttr_t virat_task_attr = {0};
            //test_other_task_flag = osEventFlagsNew(0);
            virat_task_attr.name  = "other_task";
            virat_task_attr.stack_size = 4096;
            virat_task_attr.priority = osPriorityNormal;
            Test_OTHER_TaskHandle = osThreadNew(test_other_task,0,&virat_task_attr);
        }

        if(test_uart_sem == NULL)
            test_uart_sem = osSemaphoreNew(1, 0, NULL);

    }
    else{
        cm_demo_printf("param error!\n");
    }
    
}

///测试添加
/*测试2-8章AT命令存在性，AT+TRB和AT+MREBOOT、+CIEV、+CMIT/+CMT、+CDS需要手动测试*/
// unsigned char *virt_base_at_2_8[] = {"A/","AT+CPOF=?","ATS0=?","ATS3?","ATS4?","ATS5?","AT&F0",\
//                                         "ATV1","AT&W0","ATQ0","ATX4","ATZ0","AT+CFUN=?","AT+CMEE=?","AT+CSCS=?","AT+CMUX=?","AT+ICF=?",\
//                                         "AT+IPR=?","AT+GSN=?","AT+CGSN=?","AT+GMM=?","AT+CGMM=?","AT+GMR=?","AT+CGMR=?","AT+GMI=?","AT+CGMI=?",\
//                                         "ATI","AT+CIMI=?","AT+CALA=?","AT+CALD=?","AT+CCLK=?","AT+CLAC=?","AT+CTZR=?","AT+CEER=?","AT+CPAS=?",\
//                                         "AT+CSCLK=?","AT+IFC=?","AT+CMUT=?","AT+AUDCH=?","AT+CLVL=?","AT^NETIF?","AT+CAUDREC=?","AT+CAUDPLAY=?",\
//                                         "AT+ICCID","AT+CPIN=?","AT+CPWD=?","AT+CRSM","AT+CNUM=?","ATA","ATD1888","ATH","AT+CHUP=?","AT+CHLD=?",\
//                                         "AT+CLCC=?","AT+COPN=?","AT+COPS?","AT+CREG=?","AT+CPOL=?","AT+CSQ=?","AT+CTZU=?","AT+CCED=?","AT+CESQ=?",\
//                                         "AT+TUEINFO=?","AT+CTEC?","AT+SNTP=?","AT+CEMODE=?","AT+CGEQOS=?","AT+CGEQOSRDP=?","AT+CEREG=?","AT+CSCON=?",\
//                                         "AT+CISRVCC=?","AT+CEUS=?","AT+CEVDP=?","AT+CDU=0","AT+CHCCS=?","AT+SETVOLTE=?","AT+CSDH=?","AT+CSMP=?",\
//                                         "AT+CMSS=?","AT+CMGD=?","AT+CMGF=?","AT+CMGL=?","AT+CMGR=?","AT+CMGS=?","AT+CMGC=0","AT+CMGW=?","AT+CNMI=?",\
//                                         "AT+CPMS=?","AT+CSCA=?","AT+CMMS=?","AT+CSMS=?","AT+CNMA",/*"AT+CSCB=?",*/"AT+CGATT=?","AT+CGDCONT=?","AT+CGACT=?",\
//                                         "AT+CRC=?","AT+CGQMIN=?","AT+CGPADDR=?","AT+CGAUTO=?","AT+CGQREQ=?","AT+CGREG=?","ATD*99***1#","+++","AT+CGANS=?",\
//                                         "AT+CGEREP=?","AT+CGCLASS=?","AT+CGDSCONT=?","AT+CGTFT=?","AT+CGCMOD=?","AT+CGCONTRDP=?","AT+CGSCONTRDP=?",\
//                                         "AT+CGTFTRDP=?","AT+CGDEL=?","AT+CGAUTH=?"};//AT+COPS=?命令第一次执行时，返回时间长，改为AT+COPS?
// +++,+CMT/+CMTI,+CDS/+CDSI,+CME,+CMS
// unsigned char *virt_base_at_2_8[] = {"A/","ATE","ATS3","ATS4","ATS5","AT&F","ATV","ATQ","ATZ","ATX","ATI","AT+GMI","AT+CGMI","AT+GMM","AT+CGMM","AT+GMR",\
//                                     "AT+CGMR","AT+GSN","AT+CGSN","AT+IPR","AT+ICF","AT+IFC","AT+CSCS","AT+CMUX","ATS0","ATA","AT+CSTA","ATD","ATH","AT+CMOD",\
//                                     "AT+CHUP","AT+CEER","AT+CRC","AT+CREG","AT+COPS","AT+CLCK","AT+CLIP","AT+CLIR","AT+COLP","AT+CCUG","AT+CCFC","AT+CCWA",\
//                                     "AT+CHLD","AT+CSSN","AT+CLCC","AT+CPOL","AT+CPLS","AT+COPN","AT+CPSMS","AT+CEDRXS","AT+CEDRXRDP","AT+CCIOTOPT","AT+CNMPSD",\
//                                     "AT+CPAS","AT+CFUN","AT+CSQ","AT+CESQ","AT+CCLK","AT+CLAC=?","AT+CTZU","AT+CTZR","AT+CIREG","AT+CIREP","AT+CGPIAF","AT+CGDCONT",\
//                                     "AT+CGDSCONT","AT+CGTFT","AT+CGQREQ","AT+CGQMIN","AT+CGEQREQ","AT+CGEQMIN","AT+CGEQNEG","AT+CGATT","AT+CGACT","AT+CGCMOD","AT+CGDATA",\
//                                     "AT+CGPADDR","AT+CGAUTO","AT+CGANS","AT+CGCLASS","AT+CGEREP","AT+CGREG","AT+CGCONTRDP","AT+CGTFTRDP","AT+CGEQOS","AT+CGEQOSRDP",\
//                                     "AT+CEMODE","AT+CGDEL","AT+CSCON","AT+CGAUTH","AT+CDU","AT+CHCCS","AT+CPIN","AT=CPWD","AT+CSIM","AT+CRSM","AT+CNUM","AT+CIMI","AT+CCHO",\
//                                     "AT+CCHC","AT+CGLA","AT+CSMS","AT+CMGF","AT+CSMP","AT+CGSMS","AT+CSCA","AT+CSDH","AT+CNMI","AT+CNMA","AT+CMGR","AT+CMGC","AT+CMGL",\
//                                     "AT+CMGD","AT+CMGW","AT+CMGS","AT+CMSS","AT+CPMS","AT+CMMS","AT+CSCB","AT+CMEE"};

// ///结束

///"ATA","ATD","ATH","AT+CMOD","AT+CHUP","AT+CRC","AT+CHLD","AT+CHCCS","+CMT/+CMTI","+CDS/+CDSI","+CME","+CMS"  手动测试
unsigned char *virt_base_at_2_8[] = {"A/","ATE=1","ATS3?","ATS4?","ATS5?","AT&F","ATV1","ATQ0","ATZ0","ATX4","ATI","AT+GMI","AT+CGMI","AT+GMM","AT+CGMM","AT+GMR","AT+CGMR","AT+GSN=0","AT+CGSN=1","AT+IPR?","AT+CSCS?","AT+CMUX?","ATS0?",\
                                    "AT+COPS?","AT+CLIP=?","AT+CLIR=?","AT+COLP=?","at+ccfc=?","at+ccwa=?","AT+COPN","AT+CPAS=?","AT+CFUN=?","AT+CSQ","AT+CESQ","AT+CLAC=?","AT+CTZU","AT+CTZR=?","AT+CGDCONT?","AT+CGTFT=?","AT+CGATT?","AT+CGACT?",\
                                    "AT+CGCMOD=?","AT+CGDATA=?","AT+CGPADDR","AT+CGEREP?","AT+CEREG?","AT+CGCONTRDP=?","AT+CGEQOS?","AT+CPIN?","AT+CPWD=?","AT+CRSM=?","AT+CNUM=?","AT+CIMI","AT+CSMS=?","AT+CMGF=?","AT+CSMP?","AT+CSCA?","AT+CNMI?",\
                                    "AT+CMGC=?","AT+CMGL=?","AT+CMGD=?","AT+CMGW=?","AT+CMGS=?","AT+CMSS=?","AT+CPMS=?","AT+CMMS=?","AT+CMEE=?","AT+CMEE=?"};


// "ATL","ATM","ATP","ATQ","ATT","ATV1","ATX","ATZ","AT&C","AT&D","AT&F","AT&S","AT&Z=?","AT&M","AT&V","AT&W","AT+CIMI","AT+COPS?","AT+CFUN?","AT+CPIN?",\
//                                     "AT+CSQ","AT+CPINR?","AT+CESQ","AT+CGDCONT?","AT+CGDSCONT?","AT+CGTFT?","AT+CGATT?","AT+CGACT?","AT+CGDATA=?","AT+CEREG?","AT+CGCONTRDP","AT+CGEQOSRDP",\
//                                     "AT+EPIN?","AT+MSTK=?","AT+MEDCR?","AT$MYMINISYS=?","AT$MYFOTA=?","ATO","ATI","AT+CGMI",\
//                                     "AT+CGMM","AT+CGMR","AT+CSCS?","AT+WS46?","AT+GMI","AT+GMM","AT+GMR","AT+GOI","AT+GCAP=?","AT+GCI","AT+ICF?","AT+IFC?","AT+IDSR?","AT+ASTO?","ATD*99***1#","+++","ATH","AT+CNUM=?","AT+CLCK=?",\
//                                     "AT+CPWD=?","AT+CLIP=?","AT+CLIR=?","AT+COLP=?","AT+CDIP=?","AT+CCFC=?","AT+CCWA=?","AT+CUSD=?","AT+CPOL=?","AT+CPLS=?","AT+COPN=?","AT+CSSAC","AT+CNEM","AT+CPSMS=?","AT+CEDRXS=?","AT+CEDRXRDP",\
//                                     "AT+CCIOTOPT=?","AT+CPAS","AT+CIND","AT+CCLK?","AT+CSIM=?","AT+CRSM=?","AT+CCWE=?","AT+CLAC=?","AT+CTZU=?","AT+CTZR=?","AT+CGLA=?","AT+CRLA=?","AT+CCHO=?","AT+CCHC=?",\
//                                     "AT+CUAD=?","AT+CGPIAF=?","AT+CEN=?","AT+CPNER=?","AT+CMEE=?","AT+CGQREQ=?","AT+CGQMIN=?","AT+CGCMOD=?","AT+CGPADDR=?","AT+CGEREP=?","AT+CGSMS=?","AT+CGSCONTRDP=?","AT+CGTFTRDP=?",\
//                                     "AT+CGEQOS=?","AT+CEMODE=?","AT+CSCON=?","AT+CIPCA=?","AT+CNMPSD=?","AT+CEUS=?","AT+CEVDP=?","AT+CABTSR=?","AT+CABTRDP=?","AT+CGAPNRC=?","AT+CSMS=?","AT+CPMS=?","AT+CMGF=?","AT+CSMP=?",\
//                                     "AT+CSDH=?","AT+CSCB=?","AT+CSAS=?","AT+CRES=?","AT+CNMI=?","AT+CMGL=?","AT+CMGR=?","AT+CMGS=?","AT+CMSS=?","AT+CMGW=?","AT+CSCA=?","AT+CNMA=?","AT+CMGD=?","AT+CMGC=?","AT+CMMS=?",\
//                                     "AT","AT+BTMAC=?","AT*L1DEBUG=?","AT+RESET","AT+RSTSET","AT+CMUX?","AT+IPR?",\
//                                     "AT^SPN=?","AT+CPIN2?","AT+SWITCHSIM?","AT+DUALSIM?","AT+BINDSIM?","AT+CWRITESIM?","AT+EEMOPT=?",\
//                                     "AT+EEMGINFO?","AT+ATDB=?","AT+CGSEND=?","AT+VDUMP=?","AT+VPDUS=?","AT+VHDL=?","AT+VECHO=?","AT+LTEPOWER=?",\
//                                     "AT^CACAP=?","AT+GETIP=?","AT+PEER=?","AT+CGCI=?","AT+CGOI=?",\
//                                     "AT+ERGA=?","AT+ERTCA=?","AT+CMEMFULL=?","AT^SYSINFO","AT+BGLTEPLMN=?","AT+CPLMNS=?","AT+OPERCFG?","AT+LOG?",\
//                                     "AT^HVER","AT+ZDON?","AT+CELLINFO?","AT+CMRSS=?","AT+CMGSS=?","AT+CMSMS=1","AT+CMGMS=1","AT+PACSP=?",\
//                                     "AT+AOPS=?","AT+AOPSCFG=?","AT+MSCLASS=?","AT+MIPCFG=?","AT+MIPTKA=?","AT+MIPOPEN=?","AT+MIPCLOSE=?","AT+MIPSEND=?","AT+MIPRD=?","AT+MIPMODE=?",\
//                                     "AT+MIPSTATE=?","AT+MIPSACK=?","AT+MDNSCFG=?","AT+MDNSGIP=?","AT+MFCFG=?","AT+MFSINFO=?","AT+MFSIZE=?","AT+MFLIST=?","AT+MFPUT=?","AT+MFGET=?","AT+MFOPEN=?","AT+MFREAD=?","AT+MFWRITE=?",\
//                                     "AT+MFMFSYNC=?","AT+MFSEEK=?","AT+MFTRUNC=?","AT+MFCLOSE=?","AT+MFDELETE=?","AT+MFMOVE=?","AT+MFCHECK=?","AT+MSSLCFG=?","AT+MSSLCERTWR=?","AT+MSSLKEYWR=?","AT+MSSLCERTRD=?","AT+MSSLRM=?",\
//                                     "AT+MSSLLIST=?","AT+MSSLCHECK=?","AT+MSSLCIPHER=?","AT+MTEST=?","AT+CMVERSION=?","AT+MSWVER=?","AT+MCCID=?","AT+ICCID","AT+MGPIO=?","AT+MCGSNW=?","AT+TRB=?","AT+MREBOOT=?","AT+MPOF=?",\
//                                     "AT+MLOCKFREQ=?","AT+MCHIPINFO=?","AT+MUESTATS=?","AT+MCSEARFCN=?","AT+MEMINFO=?","AT+MBAND=?","AT+MDIALUP=?","AT+MIPCALL=?","AT+MEID","AT+MHWVER","AT+MWHWVER=?","AT+MTSETID=?","AT+MBSVER",\
//                                     "AT+MLED=?","AT+MADC=?","AT+MLPMCFG=?","AT+MNTP=?","AT+MDIALUPCFG=?","AT+CGSN=?","AT+GSN=?","AT+MFWCFG=?","AT+MFWUPGRADE=?","AT+MQTTCFG=?","AT+MQTTCONN=?","AT+MQTTSUB=?","AT+MQTTPUB=?",\
//                                     "AT+MQTTUNSUB=?","AT+MQTTDISC=?","AT+MQTTREAD=?","AT+MQTTSTATE=?","AT+MHTTPCFG=?","AT+MHTTPCREATE=?","AT+MHTTPHEADER=?","AT+MHTTPCONTENT=?","AT+MHTTPREQUEST=?","AT+MHTTPREAD=?","AT+MHTTPDEL=?","AT+MHTTPTERM=?",\
//                                     "AT+MHTTPDLFILE=?","AT+MTCPTEST=?","AT+MHTTPDBG=?","AT+MPING=?","AT+MDMPCFG=?","AT+MDMPCFGEX=?","AT+MDUMPCFG=?","AT+MCFG=?","AT+MPWMCFG=?","AT+MPWMDATA=?","AT+MPWMCTRL=?","AT+MOCNTPTEST=?","AT+OCDNLD=?",};
static uint8_t at_rsp_flag = 0;
static char *check_at_cmd_exist(char* cmd);
unsigned char * test_check_at_str(const char *str,int delay);

// ///用例函数
// static void cm_test_virt_at_cb(void *param)
// {
//     cm_demo_printf("param:%s\n",param);
//     at_rsp_flag = 1;
// }
///1.测试at命令存在2-8章
int test_check_exist_of_at_cmd_2_8_chapter(void)
{
    

    // cm_demo_printf("OC_AT_TaskHandle suspend:%d\n", osThreadSuspend (OC_AT_TaskHandle));
    // cm_demo_printf("virt init ret:%d\n", cm_virt_at_init(cm_test_virt_at_cb));

    int flag = 0;
    int count = 0;
    for(int i = 0;i < 68;++i)
    {
       if(NULL != check_at_cmd_exist(virt_base_at_2_8[i]))
       {
           cm_demo_printf("cmd %s not support\n",virt_base_at_2_8[i]);
           ++count;
           flag = 1;
       }
    }
    //cm_demo_printf("have %d cmds not support\n",count);
    //cm_virt_at_deinit();
    //cm_demo_printf("OC_AT_TaskHandle resume:%d\n", osThreadResume (OC_AT_TaskHandle));

    return count;
}
///结束


///结束


char *check_at_cmd_exist(char* cmd)
{
    test_virt_at_len = 0;
    memset(test_virt_at_buffer,0,1024);


    unsigned char *cmd_temp[3] = {0};
	cmd_temp[0] = cm_malloc(20*sizeof(unsigned char));
	cmd_temp[1] = cm_malloc(20*sizeof(unsigned char));
	cmd_temp[2] = cm_malloc(20*sizeof(unsigned char));
    memset(cmd_temp[2],0,20);

    if (0 != strcmp(cmd,"+++"))
    {
        sprintf(cmd_temp[2],"%s\r\n",cmd);
		osDelay(40);
    }
    else
    {
        sprintf(cmd_temp[2],"%s",cmd);
        osDelay(150);
    }
    
    cm_demo_printf("cmd %s\n",cmd_temp[2]);

    cm_demo_printf("[VIRT_AT]:%d\n",cm_virt_at_send(cmd_temp[2],strlen(cmd_temp[2])));
    int l = 0;
    while(virt_at_ret_flag == 0)
    {
        osDelay(5);
        if(l>100)
        {
        break;
        }
        l++;
    }
    virt_at_ret_flag = 0; 
    osDelay(200);
    cm_demo_printf("%s\n",test_virt_at_buffer);
	//cm_test_send_at(cmd_temp,strlen(cmd_temp[2]));
	cm_free(cmd_temp[0]);
	cm_free(cmd_temp[1]);
	cm_free(cmd_temp[2]);
    //osDelay(500);
// #ifdef CM_ATCHART_SUPPORT
//     cm_demo_printf("at_cmd excute ret:%d",cm_atchart_excute_cmd(cmd_temp, sizeof(cmd_temp) / sizeof(cmd_temp[0]), NULL,CM_ATCHART_TERMINATOR_OK|CM_ATCHART_TERMINATOR_ERROR|CM_ATCHART_TERMINATOR_CME_ERROR,3000,p));
// #else
// 	cm_virt_at_send(cmd_temp,strlen(cmd_temp));
// #endif
    // int k = 0;
    // while(!at_rsp_flag)
    // {
    //     ++k;
    //     if(k>25)
    //     {
    //         break;
    //     }
    //     osDelay(1);
    // }
    // at_rsp_flag = 0;
    // virt_at_len = cm_virt_at_get(virt_at_buffer, 2048);
    // cm_demo_printf("virt_at_len:%d\r\n",virt_at_len);
    // for (int i = 0;i < virt_at_len;++i)
    // {
    //     cm_demo_printf("%c",virt_at_buffer[i]);    
    // }
    // cm_demo_printf("\n");
    // //cm_demo_printf("virt_at_buffer: %s\n",virt_at_buffer[i]);
    //return test_check_at_str("+CME ERROR: 58",3);
    return 0;
}

// unsigned char * test_check_at_str(const char *str,int delay)
// {
//     int i,j; 
//     unsigned char *p;
//     j = 0;
//     while(j<delay)
//     {
//         osDelay(5);
//         j++;
//         if(virt_at_len > 0)
//         {
//             for(i = 0; i < virt_at_len; i++) //将有效长度内所有含0的地方替换成'!'，以方便进行字符串检测
//             {
//                 if(virt_at_buffer[i] == 0)
//                 {
//                     virt_at_buffer[i] = '!';
//                 }
//             }
//             virt_at_buffer[virt_at_len] = 0;
//             p = strstr((const char *)virt_at_buffer,str);
//             if(p != 0)
//                 return p;
//         }
//     }
//     return 0;
// }



///用于测试文件系统flash区域读写比较
// #define FS_FLASH_TEST "sdcard0/fs_flash_test"
// #define FS_FLASH_TEST_FILE "sdcard0/fs_flash_test/file.txt"
#define FS_FLASH_TEST_FILE "file.txt"
static unsigned char WRITE_DATA[] = {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa\
                            ,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55};
//#define WRITE_DATA	"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"\
					"QWERTYUIOP[]\\ASDFGHJKL;\"ZXCVBNM,./ `1234567890-=qwertyuiop{}|asdfghjkl:\"zxcvbnm<>?~!@#$%^&*()_+QWERT"
void cm_test_write_read_check(unsigned char *cmd[],int len)
{
	int times = atoi(cmd[2]);
    cm_demo_printf("times: %d\n",times);
	// int32_t mkdir_ret = cm_fs_mkdir(FS_FLASH_TEST);
	// if(mkdir_ret < 0)
	// {
	// 	cm_demo_printf("mk dir fail!\n");
	// 	cm_demo_printf("file delete ret:%d\n",cm_fs_delete(FS_FLASH_TEST_FILE));
	// 	cm_demo_printf("remove dir ret:%d\n", cm_fs_rmdir(FS_FLASH_TEST));
	// 	return;
	// }
	int failtimes = 0;
	int32_t test_fd = -1;
    unsigned char *p;
    test_fd = cm_fs_open(FS_FLASH_TEST_FILE, CM_FS_ABPLUS);
	if(test_fd >= 0)
	{
		while(times)
		{
            if(times%2 == 0)
            {
                p = WRITE_DATA;
                cm_demo_printf("1,%p\n",p);
            }
            else
            {
                p = WRITE_DATA+1;
                cm_demo_printf("2,%p\n",p);
            }

            cm_fs_system_info_t info = {0};
            int32_t fs_getinfo = cm_fs_getinfo(&info);
            cm_demo_printf("file system info ret:%d\n",fs_getinfo );
            cm_demo_printf("file system total size:%d, remain size:%d\n",info.total_size,info.free_size);
            int write_times = 0;
            while((!fs_getinfo) && (info.free_size > 5000))
            {
                int32_t fs_write = cm_fs_write(test_fd, p, strlen(WRITE_DATA)-1);
                cm_demo_printf("file write ret(len):%d\n",fs_write);
                if(0 > fs_write)
                {
                   cm_demo_printf("file write fail\n");
                   break; 
                }
                osDelay(10);
                //cm_demo_printf("file sync ret:%d\n",cm_fs_sync(test_fd));
                fs_getinfo = cm_fs_getinfo(&info);
                cm_demo_printf("file system info ret:%d\n",fs_getinfo );
                cm_demo_printf("file system total size:%d, remain size:%d\n",info.total_size,info.free_size);
                write_times++;
            }
			cm_demo_printf("file seek ret:%d\n", cm_fs_seek(test_fd,0,0));
			char buf[5008] = {0};//需要修改opencpu main task stack 大小，推荐8192
            for (int i = 0;i < write_times;i++)
            {
                //cm_demo_printf("before read osKernelGetTickCount:%u\n",osKernelGetTickCount ());
                cm_demo_printf("file read ret(len): %d\n",cm_fs_read(test_fd, buf, strlen(WRITE_DATA)-1));
                //cm_demo_printf("after read osKernelGetTickCount:%u\n",osKernelGetTickCount ());
                osDelay(10);
                if(0 == strncmp(p,buf,strlen(WRITE_DATA)-1))
                {
                    ;
                }
                else
                {
                    failtimes++;
                    cm_demo_printf("fail %d time(s)\n",failtimes);
                }
            }
            times--;
            cm_demo_printf("times: %d\n",times);
            cm_demo_printf("close file ret:%d\n", cm_fs_close(test_fd));
            cm_demo_printf("file size ret: %d\n",cm_fs_filesize(FS_FLASH_TEST_FILE));
            cm_demo_printf("file delete ret:%d\n",cm_fs_delete(FS_FLASH_TEST_FILE));
            test_fd = cm_fs_open(FS_FLASH_TEST_FILE, CM_FS_ABPLUS);
		}
		if(0 != failtimes)
		{
			cm_demo_printf("total fail %d time(s)\n",failtimes);
		}
        cm_demo_printf("close file ret:%d\n", cm_fs_close(test_fd));
        cm_demo_printf("file size ret: %d\n",cm_fs_filesize(FS_FLASH_TEST_FILE));
        cm_demo_printf("file delete ret:%d\n",cm_fs_delete(FS_FLASH_TEST_FILE));
		// cm_demo_printf("remove dir ret:%d\n", cm_fs_rmdir(FS_FLASH_TEST));
	}
	else{
		cm_demo_printf("open file fail!\n");
		return;
	}

	
}

